package com.egao.common.module.company.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.egao.common.core.web.JsonResult;
import com.egao.common.core.web.PageParam;
import com.egao.common.module.company.entity.Company;
import com.egao.common.module.company.entity.vo.*;

import java.util.List;

/**
 * 用人单位(Company)表服务接口
 * @author dl
 */
public interface CompanyService extends IService<Company> {
    
    /** 
     * 单位列表查询
     * @param pageParam 分页对象
     * @return CompanyListVO 单位列表VO
     */
    List<CompanyListVO> listPage(PageParam<CompanyListVO> pageParam);
    /**
     * 单位详情查询
     * @param id 单位编号
     * @return 单位详情及字典数据
     */
    JsonResult detail(Integer id);
    /**
     * 单位信息审核
     * @param companyFormVO 单位实体
     * @return 是否修改成功
     */
    JsonResult checkCompany(CompanyFormVO companyFormVO);
    /**
     * 单位列表查询字典数据
     * @return 字典集合
     */
    JsonResult getCompanyDict();
    /**
     * 修改单篇状态
     * @param id
     * @return 结果对象
     */
    JsonResult updateRecruitFlag(Integer id);
    /**
     * 修改单位状态
     * @param id 单位编号
     * @param deleted 删除状态
     * @param userId 用户编号
     * @return 结果对象
     */
    JsonResult deleteFlag(Integer id, Integer deleted, Integer userId);
    /**
     * 根据组织机构代码号获取单位信息
     * @param organizationCode 组织结构代码号
     * @return Company 单位信息
     */
    Company getCompanyByOrganizationCode(String organizationCode);

    /**
     * 根据用户ID查找单位信息
     * @param userId 用户ID
     * @return 单位对象
     */
    Company getByUserId(Integer userId);

    /**
     * 验证单位状态
     * @param state 单位状态
     * @return JsonResult 正常状态0 否则1
     */
    JsonResult verifyCompanyState(String state);

    /**
     * 单位注册
     * @param companyFormVO 单位表单
     * @return JsonResult 正常状态0 否则1
     */
    JsonResult registerCompany(CompanyFormVO companyFormVO);
    /**
     * 单位字典数据
     * @return JsonResult
     */
    JsonResult getDict();
    /**
     * 单位信息修改
     * @param companyFormVO 单位实体
     * @return 是否修改成功
     */
    JsonResult updateCompany(CompanyFormVO companyFormVO);
    /**
     * 单位社会统一信用代码
     * @param organizationCode organizationCode
     * @return 是否
     */
    boolean getUserIsExistByOrganizationCode(String organizationCode);
    /**
     * 验证单位社会统一信用代码和组织机构代码
     * 根据长度判断
     * @param organizationCode 单位社会统一信用代码和组织机构代码
     * @return 是否
     */
    boolean isCreditCode(String organizationCode);
    /**
     * 单位详情查询
     * @param userId 用户编号
     * @return 单位详情及字典数据
     */
    JsonResult detailCompany(Integer userId);
    /**
     * 单位统计
     * @param pageParam 请求参数
     * @return 单位详情及字典数据
     */
    JsonResult countCompany(PageParam<CompanyListVO> pageParam);
    /**
     * 单位统计数据字典
     * @return 单位详情及字典数据
     */
    JsonResult getStatisticsDict();
    /**
     * 单位找回密码
     * @return 返回结果
     */
    JsonResult forgotCompany(CompanyForgotFormVO companyForgotFormVO);

    /**
     * 产教融合单位
     * @return
     */
    List<Company> listCooperative();


    JsonResult getCompanyByPartOrganizationCode(String code);
}